﻿using System.Linq;
using System.Web;
using BUS;

/// <summary>
/// Summary description for Basket
/// </summary>
public class Basket
{

    public DatHangBUS Cart { get; set; }

    public Basket()
    {
        if (HttpContext.Current.Session["DatHang"] == null)
        {
            Cart = new DatHangBUS();
            HttpContext.Current.Session["DatHang"] = Cart;
        }
        else
        {
            Cart = (DatHangBUS)HttpContext.Current.Session["DatHang"];
        }

    }

    public void AddItem(int productid, int quantity)
    {
        //Tìm xem sản phẩm đặt hàng đã có trong giỏ hàng hay chưa
        var ct = Cart.ChiTietDatHangs.SingleOrDefault<ChiTietDatHangBUS>(p => p.SanPham.ID == productid);

        if (ct == null) //nếu chưa có 1 chi tiết đặt hàng nào chưa sản phẩm này
        {
            //tạo mới 1 sản phẩm với thông tin là sản phẩm đã đặt            
            var newsp = SanPhamBUS.GetSanphamByID(productid);
            if (newsp == null)
                return;
            //tạo mới 1 chi tiết đặt hàng...
            var newct = new ChiTietDatHangBUS() { SanPham = newsp, SoLuong = quantity };
            newct.ThanhTien = newct.SoLuong * newct.Gia;
            //thêm mới 1 chi tiết đặt hàng vào giỏ hàng
            Cart.ChiTietDatHangs.Add(newct);

        }
        else //nếu đã có chi tiết đặt hàng của sản phẩm này
        {
            //cộng thêm số lượng của chi tiết này lên
            ct.SoLuong += quantity;

            ct.ThanhTien = ct.SoLuong * ct.Gia;
        }

        Cart.ThanhTien = GetTotalAmountCart();
    }

    public void SetItemQuantity(int productid, int quantity)
    {
        if (quantity == 0) //nếu cập nhật số lượng=0 thì remove nó
            RemoveItem(productid);

        //tìm xem chi tiết đặt hàng của sản phẩm này có trong giỏ hàng hay chưa
        var updatect = Cart.ChiTietDatHangs.SingleOrDefault(p => p.SanPham.ID == productid);
        if (updatect != null) //nếu có cập nhật số lượng đặt hàng vào chi tiết đặt hàng
        {
            updatect.SoLuong = quantity;
            updatect.ThanhTien = updatect.SoLuong * updatect.Gia;
            Cart.ThanhTien = GetTotalAmountCart();
        }
    }

    public void RemoveItem(int productid)
    {
        //tương tự cập nhật
        var removect = Cart.ChiTietDatHangs.SingleOrDefault(p => p.SanPham.ID == productid);
        if (removect != null)
        {
            Cart.ChiTietDatHangs.Remove(removect);
            removect.ThanhTien = removect.SoLuong * removect.Gia;
            Cart.ThanhTien = GetTotalAmountCart();
        }
    }

    public void RemoveAllItem()
    {
        Cart.ChiTietDatHangs.Clear();
        Cart.ThanhTien = decimal.Zero;
    }

    public decimal GetTotalAmountCart()
    {
        var total = Cart.ChiTietDatHangs.Sum(p => p.SoLuong * p.Gia);
        return (decimal)total;
    }

    public void Add(bool account)
    {
        Cart.Add(account);
        RemoveAllItem();
    }
}
